Early web content was primarily displayed as static content that only enabled limited user interaction, if any at all. For example, early web content was typically characterized by large amounts of text and images that were formatted in a layout using various Hyper Text Markup Language (HTML) formatting operations. Pages included static links to other pages and/or content, and user interaction was typically limited to clicking on these links. In contrast, modern web pages often include rich Internet applications (RIA) that support large amounts of user interaction with dynamically created content.
Prefetching is an act of extracting (fetching) network-based content from a server prior to an actual request instantiated by a user. For example, suppose that a user is currently viewing page X in a web browser, and page X links to a different page Y. The user's client computer may prefetch the content associated with page Y, downloading it as the user views the original page X. Later, when the user requests the linked page Y, the content will already be on the user's machine, thus reducing perceived delays (e.g., network transmission latency) for accessing the content. Prefetching early website content was relatively straightforward because a page could be quickly analyzed by a server or client computer to identify items that could be prefetched. HTML code, for example, could be searched for tags that indicated the presence of a link, image, or other content that could be prefetched by the client. However, with the introduction of more complex web pages that hide content behind imperative JavaScript event handlers (executable programs), additional challenges have been introduced to traditional prefetching implementations.
A modern website often includes dynamic (rich) features that allow a user to interact with the website. When the user generates an interaction event, e.g., by clicking on a particular feature, the browser executes an event handler that the page has associated with that feature. The event handler is executable code run by the client computer to create an effect for the user to experience. Execution of the event handler, which is typically initiated by the user, may then require additional transfer of content between the server and the client, and may create transmission latency that is perceived by the user.